// created: 19-6-25
// owner: flwwsg@qq.com
// desc: 获取配置

package main

import (
	"runtime"

	"gitee.com/flwwsg/utils-go/error"
	"gitee.com/flwwsg/utils-go/file"
)

type Config struct {
	// 变量
	Var varConfig
	// os 相关
	Ubuntu   osConfig
	OpenSUSE osConfig `yaml:"openSUSE"`
	// 软件安装
	Software map[string]softConfig
}

// 变量配置
type varConfig struct {
	Tuna    Mirror
	Ustc    Mirror
	VarName map[string]string
}

type Mirror struct {
	Pypi string `yaml:"pypi"`
}

type osConfig struct {
	// 安装器, ubuntu = apt, openSUSE = zypper
	Installer string
}

type softConfig struct {
	Type string   //  类型，s=服务端安装，c=家用，a=all
	Name []string // 软件包名，不同操作系统不同@连接。如 7z 在 ubuntu 下表示为 p7zip@ubuntu
}

func GetConfig() Config {
	config := new(Config)
	err := file.ReadYamlFromFile("./config.yaml", config)
	error.PanicOnErr(err)
	return *config
}

type Checker struct {
	// 操作系统
	isLinux bool
	isWin   bool
	// 版本
	version string
	// 是否有超级用户权限
	isRoot bool
}

func NewChecker() Checker {
	chk := new(Checker)
	chk.isLinux = runtime.GOOS == "linux"
	chk.isWin = runtime.GOOS == "windows"
	return *chk
}
